/**
 * 请求重试功能使用示例
 *
 * 当接口返回401时，系统会：
 * 1. 自动将请求添加到重试队列
 * 2. 弹出登录弹窗
 * 3. 用户登录成功后自动重试所有队列中的请求
 * 4. 重试成功后返回原始请求的响应数据
 */

import request from './request';

// 示例：在组件中调用需要认证的接口
export async function fetchUserData() {
  try {
    // 这个请求如果返回401，会自动被添加到重试队列
    const response = await request.get('/user/profile');
    console.log('用户数据获取成功:', response);
    return response;
  } catch (error) {
    console.error('获取用户数据失败:', error);
    throw error;
  }
}

// 示例：在组件中调用需要认证的接口
export async function fetchProductList(params: any) {
  try {
    // 这个请求如果返回401，会自动被添加到重试队列
    const response = await request.post('/feeds/feature', params);
    console.log('产品列表获取成功:', response);
    return response;
  } catch (error) {
    console.error('获取产品列表失败:', error);
    throw error;
  }
}

/**
 * 使用说明：
 *
 * 1. 正常调用接口，无需特殊处理
 * 2. 当接口返回401时，系统会自动：
 *    - 将请求保存到队列
 *    - 弹出登录弹窗
 *    - 用户登录成功后自动重试
 * 3. 重试成功后，原始的Promise会resolve，就像正常请求一样
 * 4. 重试失败后，原始的Promise会reject，需要处理错误
 *
 * 注意事项：
 * - 队列中的请求会在登录成功后立即重试
 * - 超过5分钟的请求会被自动清理
 * - 每个请求只会重试一次，避免无限循环
 * - 重试时会使用新的token
 */
